import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class UsuarioCadastrado extends Sugestao{
	//Nesta classe sera possivel checar e alterar dados de usuarios cadastrados
	
	private final int numeroDeEstabelecimentos = 39;
	private String[] perfil = new String[numeroDeEstabelecimentos];
	private String[] linha;
	private String[] assist;
	private String nome;
	private String arquivoTemporario = "";
	Usuario usuario = new Usuario();
	
	/**
	 * Construtor da classe.
	 * 
	 * @param usuario
	 * 		Usuario na lista de opinioes.
	 * @throws IOException
	 */
	public UsuarioCadastrado(String nome) throws IOException{
		this.nome = nome;
		
		BufferedReader inputStream = null;
		 
	    try {
	    	inputStream = new BufferedReader(new FileReader("opinioes-dos-usuarios-v2.data"));
	 
	    	String line;
	    	while ((line = inputStream.readLine()) != null) {
	    		
	    		linha = line.split(";");
	    		
	    		if(linha[1].equals(nome)){
	    			
		    		for(int i = 2; i <= numeroDeEstabelecimentos + 1; i++){
		    			assist = linha[i].split(":");
		    			perfil[i-2] = assist[0].trim();
		    		}
	    		}
	    	}
	    	
	    }finally{
	      	if (inputStream != null) {
	      		inputStream.close();
	      	}
	    }
	}
	
	/**
	 * Gera o perfil salvo anteriormente pelo usuario.
	 * 
	 * @return
	 * 		O perfil do usuario.
	 * @throws IOException
	 */
	public String[] getPerfil() throws IOException{
		
		return perfil;
	}
	
	/**
	 * Altera as preferencias do usuario.
	 * 
	 * @param estabelecimento
	 * 		Estabelecimento que tera sua nota mudada.
	 * @param nota
	 * 		Nova nota do estabelecimento.
	 */
	public void setPerfil(int estabelecimento, String nota){
		perfil[estabelecimento] = nota;
	}
	
	/**
	 * Insere o perfil alterado na lista de opinioes dos usuarios.
	 * 
	 * @throws IOException
	 */
	public void inserePerfil() throws IOException{
		BufferedReader inputStream = null;
		 
	    try {
	    	inputStream = new BufferedReader(new FileReader("opinioes-dos-usuarios-v2.data"));
	 
	    	String line;
	    	while ((line = inputStream.readLine()) != null) {
	    		
	    		linha = line.split(";");
	    		
	    		
	    		if(!linha[1].equals(nome)){
	    			
	    			arquivoTemporario = arquivoTemporario + line + "\n";
	    		}
	    	}
	    	
	    }finally{
	      	if (inputStream != null) {
	      		inputStream.close();
	      	}
	    }
	    
	    PrintWriter outputStream = null;
	    try{
	    	outputStream = new PrintWriter(new BufferedWriter(new FileWriter("opinioes-dos-usuarios-v2.data")));
	    	arquivoTemporario = arquivoTemporario.substring(0, arquivoTemporario.length() - 1);
	    	outputStream.println(arquivoTemporario);
	    	
	    	
	    }finally{
	    	}if (outputStream != null) {
	    		outputStream.close();
	    		usuario.insereOpiniao(nome,perfil);
	    	}
	    }
}
